const express = require('express')
const router = express.Router()
const User = require('./models/user')

router.get('/', function (req, res) {
  // console.log(req.session.isLogin)
  res.render('index.html', { user: req.session.user})
})

router.get('/login', function (req, res, next) {
  res.render('login.html')
})

router.post('/login', function (req, res, next) {
  // res.render('/', {user: req.session.user})
  // 1.获取表单数据 req.body
  // console.log(req.body)
  var body = req.body
  // 2.查询数据库，用户名，密码是否正确
  User.findOne({
    email: body.email,
    password: body.password
  }, function (err, user) {
    if (err) {
      // return res.status(500).json({
      //   err_code: 500,
      //   // message: '系统繁忙，请稍后重试'
      //   message: err.message
      // })
      return next(err)
    }

    if (!user) {
      return res.status(200).json({
        err_code: 1,
        message: 'email or pwd is wrong/invalid.'
      })
    }

    // 用户存在，登录成功，通过 session 记录登录状态
    req.session.user = user
    res.status(200).json({
      err_code: 0,
      message: 'all things is ok'
    })
  })
  // 3.发送响应 数据
})

router.get('/register', function (req, res, next) {
  res.render('register.html')
})

router.post('/register', function (req, res, next) {
  // 1.获取表单提交的数据
  // console.log(req.body)
  // 2.操作数据库
  //   判断用户是否存在
  // 3.发送响应
  var body = req.body
  User.findOne({
    // email: body.email
    $or: [{
        email: body.email
      },
      {
        nickname: body.nickname
      }
    ]
  }, function (err, data) {
    if (err) {
      // return res.status(500).json({
      //   successful: false,
      //   message: 'server is error'
      // })
      return next(err)
    }
    // console.log(data)
    // 如果邮箱已经存在，再判断昵称
    if (data) {
      return res.status(200).json({
        successful: true,
        message: 'email or nickname already exists',
        err_code: 1
      })
    }
    new User(body).save(function (err, data) {
      if (err) {
        // return res.status(500).json({
        //   successful: false,
        //   message: 'server is error',
        //   err_code: 500
        // })
      return next(err)
      }
      // 注册成功，使用 session 记录登录状态
      // req.session.isLogin = true
      req.session.user = data 
      // 使用 express 提供的响应方法： json 
      // 该方法接受了一个对象作为参数，他会自动把对象转为字符串早发送给浏览器
      res.status(200).json({
        successful: true,
        message: 'ok',
        err_code: 0
      })
    })
    
  })

})

router.get('/logout', function (req, res) {
  // 清除登录状态
  // 重新定向到登录页
  req.session.user = null
  res.redirect('/')
})

router.get('/settings/profile', function (req, res) {
  res.render('/settings/profile.html')
})

module.exports = router